package cn.tedu._04mybatis.mapper;

import cn.tedu._04mybatis.pojo.entity.User;
import cn.tedu._04mybatis.pojo.entity.Weibo;
import cn.tedu._04mybatis.pojo.vo.*;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface WeiboMapper {
    /*
     * 增添加微博
     */
    //@Insert("INSERT INTO weibo(content,created,user_id) VALUES (#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);
    /*
     * 2.删：微博表中删除一条数据
     */
    //@Delete("DELETE FROM weibo WHERE id=#{wid}")
    int deleteWeiboById(Long wid);
    /*
    `* 3.改：微博表中修改一条数据
     */
    //@Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}")
    int updateWeiboById(Weibo weibo);
    /*
     * 4.查：单条数据全字段查询
     */
    //@Select("SELECT id,content,created,user_id userId FROM weibo WHERE id=#{wid}")
    Weibo selectWeiboById(Long wid);
    /*
     * 5.查：多条数据全字段查询
     * 查询指定用户发的所有微博信息
     * 查询结果可能包含多条数据时，需要使用List集合接收
     * 否则抛出异常：TooManyResultsException2
     */
    //@Select("SELECT id,content,created,user_id userId FROM weibo WHERE user_id=#{uid}")
    List<Weibo> selectWeiboByUserId(Long uid);
    /**
     * 6.查：单条数据部分字段查询
     *   查询微博表中指定微博的内容和发布时间；
     */
    //@Select("SELECT content,created FROM weibo WHERE id=#{wid}")
    WeiboVO1 selectWeiboVO1ById(Long wid);
    /**
     * 7.查：多条数据部分字段查询
     * 查询所有微博的内容和用户id；
     */
    //@Select("SELECT content,user_id userId FROM weibo")
    List<WeiboVO2> selectWeiboVO2();
    /**
     * 8.动态修改：根据微博id动态修改微博信息
     *
     */
    int dynamicUpdate(Weibo weibo);
    /**
     * 9.动态删除
     */
    int deleteWeiboByIds1(Long [] ids);
    /*
     * 10.动态删除
     */
    int deleteWeiboByIds2(List<Long> ids);
    /*
     * 11.统计微博数量
     */
    int countWeibo();
    /**
     * 12.ResuktMap单表
     * 根据微博id查询id，content，user_id
     */
    ResultMapVO1 selectMap1(Long wid);
    /**
     * 13.ResuktMap多表
     *
     */
    ResultMapVO2 selectMap2(Long uid);

    ResultMapVO3 selectMap3(Long wid);

    ResultMapVO4 selectMap4(Long wid);





}























